package main

import "fmt"

func main() {
	var a, b, c int //同时声明多个变量，go的变量声明后必须使用，否则编译失败
	fmt.Println(a, b, c)

	var d, e, f int = 1, 2, 3 //同时声明并初始化多个变量
	fmt.Println(d, e, f)

	var h, i, j = 1, 2, 3 //省略类型，自动推断
	fmt.Println(h, i, j)

	k, l, m := 3, 2, 1 //简短声明，仅适用于局部变量
	fmt.Println(k, l, m)

	_, n := 11, 22 //下划线变量名的赋值会被丢弃
	fmt.Println(n)

	const Pi float32 = 3.1415926 //声明常量

	var enabled, disabled bool = true, false //声明布尔型
	fmt.Println(enabled, disabled)

	//整型
	var n1 int  //有符号整型，位数取决于编译器
	var n2 uint //无符号整型，位数取决于编译器
	fmt.Print(n1, n2)

	//int8 int16 int32(rune) int64 表示固定位数有符号整型
	//uint8（byte） uint16 uint32 uint64 表示固定位数无符号整型
	var n3 int32 = 123
	var n4 int = 321
	fmt.Println(n3, n4)
	//go的数字变量类型不同不允许运算
	//c := n3 + n4 //注意 int和int32不通用

	//浮点型 只有float32和float64两种，没有float
	var n5 float32
	var n6 float64
	fmt.Println(n5, n6)

	//复数 complex64 （32位实部+32位虚部） 和 complex128 （64位实部+64位虚部）
	var c2 complex64 = 3 + 4i
	fmt.Printf("c2 = %v", c2)
}
